package com.fulihui.information.core.repository;

import com.fulihui.information.dal.dataobj.InfoCategoryExample;
import com.fulihui.information.dto.CategoryDTO;
import com.fulihui.information.request.CategorySaveRequest;
import com.fulihui.information.request.CategoryTransformSequenceRequest;

import java.util.List;

/**
 * @author Willard.Hu on 2016/12/27 0027.
 */
public interface CategoryRepository {

    /**
     * 查询一组类目
     * @param productCode 产品代码
     * @param parentCode 主主节点
     * @return {@link CategoryDTO} 列表
     */
    List<CategoryDTO> queryGroup(String productCode, String parentCode);

    /**
     * 按条件查询类目
     * @param example {@link InfoCategoryExample}
     * @return {@link CategoryDTO} 列表
     */
    List<CategoryDTO> query(InfoCategoryExample example);

    /**
     * 插入类目
     * @param request {@link CategorySaveRequest}
     */
    void insert(CategorySaveRequest request);

    /**
     * 更新类目
     * @param request {@link CategorySaveRequest}
     */
    boolean update(CategorySaveRequest request);

    /**
     * 通过类目代码查询类目
     * @param code 类目代码
     * @return {@link CategoryDTO}
     */
    CategoryDTO queryByCode(String code);

    /**
     * 改变类目的顺序
     * @param request {@link CategoryTransformSequenceRequest}
     * @return 操作结果
     */
    boolean transformSequence(CategoryTransformSequenceRequest request);

}
